using System;
using ns27;

namespace Triton.Game.Mapping
{
	[Attribute38("SpellImpl")]
	public class SpellImpl : Spell
	{
		public Actor m_actor => method_3<Actor>("m_actor");

		public GameObject m_rootObject => method_3<GameObject>("m_rootObject");

		public MeshRenderer m_rootObjectRenderer => method_3<MeshRenderer>("m_rootObjectRenderer");

		public SpellImpl(IntPtr address, string className)
			: base(address, className)
		{
		}

		public SpellImpl(IntPtr address)
			: this(address, "SpellImpl")
		{
		}

		public void InitActorVariables()
		{
			method_8("InitActorVariables");
		}

		public void SetActorVisibility(bool visible, bool ignoreSpells)
		{
			method_8("SetActorVisibility", visible, ignoreSpells);
		}

		public void SetVisibility(GameObject go, bool visible)
		{
			method_8("SetVisibility", go, visible);
		}

		public void SetVisibilityRecursive(GameObject go, bool visible)
		{
			method_8("SetVisibilityRecursive", go, visible);
		}

		public void SetAnimationSpeed(GameObject go, string animName, float speed)
		{
			method_8("SetAnimationSpeed", go, animName, speed);
		}

		public void SetAnimationTime(GameObject go, string animName, float time)
		{
			method_8("SetAnimationTime", go, animName, time);
		}

		public void PlayAnimation(GameObject go, string animName, PlayMode playMode, float crossFade)
		{
			method_8("PlayAnimation", go, animName, playMode, crossFade);
		}

		public void PlayParticles(GameObject go, bool includeChildren)
		{
			method_8("PlayParticles", go, includeChildren);
		}

		public GameObject GetActorObject(string name)
		{
			return method_14<GameObject>("GetActorObject", new object[1] { name });
		}

		public void SetMaterialColor(GameObject go, Material material, string colorName, Color color, int materialIndex)
		{
			method_8("SetMaterialColor", go, material, colorName, color, materialIndex);
		}

		public Material GetMaterial(GameObject go, Material material, bool getSharedMaterial, int materialIndex)
		{
			return method_14<Material>("GetMaterial", new object[4] { go, material, getSharedMaterial, materialIndex });
		}
	}
}
